home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Bootlegger Magazine (1983)(Bootleg).zip / Bootlegger Magazine (1983)(Bootleg).do / CRACKING-PART 8.txt < prev    next >
Text File  |  1996-12-24  |  16KB  |  485 lines

  1. 8
  2.  
  3. 
  4.  
  5. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
  6.  
  7.  
  8.  
  9.  
  10. ***************************************
  11. *                                     *
  12. *                                     *
  13. *                                     *
  14. *                                     *
  15. *             SSI'S RDOS              *
  16. *                                     *
  17. *                                     *
  18. ***************************************
  19.  
  20.  
  21.      IT'S REALLY NOT FAIR WHEN ONE
  22. PUBLISHER HAS A SYSTEM THAT KEEPS THEIR
  23. SOFTWARE FROM BEING CONVENIENTLY BACKED
  24. UP, ESPECIALLY WHEN SO MANY OF THE
  25. OTHER "PROTECTION" SCHEMES HAVE FALLEN
  26. TO THE GROWING CORPS OF TALENTED
  27. KRACKISTS. WITH THAT IN MIND, AND
  28. BECAUSE WE ALL LOVE A CHALLENGE, WE
  29. WILL TAKE A LONG LOOK AT THE APPROACH
  30. USED BY STRATEGIC SIMULATIONS, INC.
  31. (SSI) IN PROVIDING COPY PROTECTION FOR
  32. THEIR SERIES OF WAR SIMULATIONS AND
  33. "RAPID-FIRE" SERIES, AS WELL AS SOME
  34. RECENT GAMES WHICH HAVE A LITTLE
  35. REDEEMING SOCIAL MERIT: EPIDEMIC,
  36. RINGSIDE SEAT, AND GALACTIC ADVENTURES.
  37.  
  38.      AS WE'VE DISCUSSED IN THE BASICS
  39. OF KRACKING SERIES, YOU CAN EITHER
  40. PROTECT A PROGRAM BY VARIOUS MEANS, OR
  41. YOU CAN PROTECT A DISK FULL OF PROGRAMS
  42. WITH SOME SORT OF DOS MODIFICATION.
  43. DOS MODIFICATIONS ARE USUALLY NOT TOO
  44. SUCCESSFUL, SINCE SOME ENTERPRISING
  45. PERSON OUT IN PIRATELAND WILL SOONER OR
  46. LATER FIGURE A WAY TO COPY ALL THE
  47. FILES ONTO A NORMAL DOS DISK, MAKING
  48. ALL THE DISK PROTECTION WORTHLESS.
  49. SSI'S ANSWER TO THIS PROBLEM WAS NOT
  50. ONLY TO WRITE AN EXTENSIVELY REVISED
  51. DOS, BUT TO COUPLE IT WITH
  52. "ENHANCEMENTS" TO APPLESOFT USING THE
  53. AMPERSAND VECTOR (MORE ON THIS LATER).
  54. THIS WAY, EVEN IF YOU COULD STRIP THE
  55. FILES OFF THE DISK, YOU WOULD NEED TO
  56. WRITE A DOS WHICH WAS:
  57.   A. DOS 3.3 COMPATIBLE,
  58.   B. AS SHORT AS RDOS ($B100-$BFFF),
  59.      SINCE THE PROGRAMS FREQUENTLY USE
  60.      ALL OF THE FREE SPACE, AND
  61.   C. CAPABLE OF CORRECTLY INTERPRETING
  62.      THE AMPERSAND COMMANDS WHICH ARE
  63.      LIBERALLY SPRINKLED THROUGH
  64.      ALL THE APPLESOFT PROGRAMS.
  65. THE AMOUNT OF EFFORT REQUIRED TO DO
  66. THIS HAS KEPT KRACKISTS AT BAY, AT
  67. LEAST UNTIL NOW.
  68.  
  69.      FIRST, HOW TO APPROACH THIS TYPE
  70. OF KRACKING JOB?  THE SEVENTH LAW OF
  71. KRACKING SAYS: "WHEN YOU'RE TOTALLY
  72. LOST, BOOT-TRACE" (I KNOW, I KNOW -- I
  73. PROMISE THAT I'LL WRITE A COMPLETE
  74. COLUMN ON BOOT-TRACING SOON. IF YOU
  75. JUST CAN'T WAIT, TRY TO GET HOLD OF THE
  76. HARDCORE MAGAZINE UPDATE 3.1, PAGES
  77. 6-15.  IT HAS A LUCID, WELL-EXAMPLED
  78. DISCUSSION OF THE BOOT-TRACING
  79. PROCESS). WHEN YOU LOAD T0, S0 INTO
  80. $800, YOU WILL IMMEDIATELY SEE THE
  81. FAMILIAR "BRODY LOADY" (NAMED AFTER
  82. THAT FUN-LOVING BUNCH OF SCANDAHOOVIANS
  83. AT BR0DERBUND) WHICH MOVES THE ENTIRE
  84. PAGE DOWN TO PAGE 2 AND JUMPS TO $20F
  85. TO COMPLETE THE BOOT. THIS IS A FAIRLY
  86. TRICKY BOOT WHICH HAS BEEN USED FOR
  87. ALL TYPES OF PROTECTION SCHEMES, BUT IF
  88. YOU PUZZLE OVER IT LONG ENOUGH, YOU'LL
  89. SEE THAT THE JMP ($003E) AT LOCATION
  90. 343 DOUBLES AS A JUMP TO THE SECTOR
  91. READ ROUTINE, THEN AS A JUMP TO THE
  92. PROGRAM START WHEN ALL THE SECTORS ARE
  93. READ IN. THE PROGRAM START IN THIS CASE
  94. IS $B300, WHICH IS A JMP $B974 THAT
  95. DROPS YOU INTO A DISCOURAGINGLY COMPLEX
  96. SERIES OF JSR'S AND JMP'S.
  97.  
  98.      AT THIS POINT, DISCRETION IS THE
  99. BETTER PART OF VALOR (REMEMBER THE
  100. SECOND LAW: THERE'S ALWAYS ANOTHER
  101. WAY). WHAT THE BOOT-TRACE HAS TOLD US
  102. IS THAT THE DOS CODE LIVES FROM $B300
  103. TO $BFFF, AND IS NOT STRAIGHTFORWARD,
  104. "LINEAR" CODE. YOU MAY RECALL THAT WE
  105. DESCRIBED HOW TO LIST AN RDOS APPLESOFT
  106. FILE IN BASICS 103: RESET, D6:00, C081,
  107. CTRL-C, "LIST". YOU WILL BE IMMEDIATELY
  108. STRUCK BY A WHOLE NEW LIST OF COMMANDS
  109. THAT MOTHER APPLE NEVER TOLD YOU ABOUT.
  110. THESE ARE AMPERSAND (&) COMMANDS WHICH
  111. HAVE BEEN ADDED TO IMPLEMENT THE RDOS
  112. COMMANDS, AND THEY WORK AS FOLLOWS:
  113. WHENEVER THE "&" IS ENCOUNTERED,
  114. APPLESOFT JUMPS TO LOCATION $3F5.
  115. LOOKING AT THAT LOCATION WILL TELL YOU
  116. WHERE THE AMPERSAND EVALUATION ROUTINE
  117. IS LOCATED; IN THIS CASE, IT CONTAINS
  118. 4C 03 B3 OR JMP $B303. EXAMINATION OF
  119. THE CODE THERE REVEALS THAT THE
  120. ACCUMULATOR IS COMPARED TO A TABLE OF
  121. NUMBERS IN $B320-$B330, AND THE ADDRESS
  122. OF THE ROUTINE TO BE EXECUTED IS PICKED
  123. UP FROM A TABLE IN $B331-$B352. YOU CAN
  124. EASILY SEE ALL THIS CODE BY RESETTING
  125. ANY OF THE RDOS SSI GAMES, AND IF
  126. YOU'RE REALLY INTERESTED, YOU CAN
  127. CONTACT YOUR LOCAL PIRATE FOR A COPY OF
  128. THE SOURCE CODE LISTINGS, IN BIG MAC
  129. FORMAT, FOR BOTH THE ORIGINAL AND DOS
  130. 3.3 COMPATIBLE VERSIONS OF RDOS. THE
  131. DISK ALSO CONTAINS OBJECT CODE FOR RDOS
  132. 3.3 AND LISTINGS OF THE OTHER PROGRAMS
  133. USED FOR SECONDARY PROTECTION AND
  134. INITIALIZING. IF THERE'S ENOUGH
  135. INTEREST, THE SYSOP MIGHT BE PERSUADED
  136. TO INCLUDE THEM ON HIS APPLE TREK
  137. KRACKING DISK #2.
  138.  
  139.      NOW WE'RE STARTING TO MAKE
  140. PROGRESS.  EACH TIME THE & COMMAND IS
  141. ENCOUNTERED, APPLESOFT OBLIGINGLY JUMPS
  142. UP TO $B303 WITH THE HEX VALUE OF THE
  143. NEXT BASIC TOKEN IN THE ACCUMULATOR,
  144. AND THEN DECIDES WHAT TO DO NEXT. THE
  145. TOKENS, WITH THEIR VALUE, SUBROUTINE
  146. ADDRESS START, AND FUNCTION ARE SHOWN
  147. BELOW:
  148.  
  149.   & --- HEX DEC ADDR  FUNCTION IN RDOS
  150.   ----- --- --- ----  ----------------
  151.   C      43  67 B353  CATALOG (&C AT)
  152.   LOAD   B6 182 B371  LOAD APLSFT FILE
  153.   RUN    AC 172 B446  RUN  APLSFT FILE
  154.   GOTO   AB 171 B44C  EXEC (?)
  155.   SAVE   B7 183 B48D  SAVE APLSFT FILE
  156.   STORE  A8 168 B511  BSAVE (WITH A,L)
  157.   RECALL A7 167 B52B  BLOAD, A OPTIONAL
  158.   DEF    B8 184 B544  ?
  159.   PRINT  BA 186 B56C  WRITE TO TEXTFILE
  160.   READ   87 135 B582  READ TEXT FILE
  161.   END    80 128 B5A9  CLOSE A FILE
  162.   DEL    85 133 B5AE  DELETE A FILE
  163.   LEN    E3 227 B5CD  ?
  164.   D      44  68 B620  DRIVE?
  165.   S      53  83 B62E  SLOT?
  166.   NEW    BF 191 B64F  ?
  167.   USR    D5 213 B670  CHG RTN FROM &
  168.  
  169. AS YOU CAN SEE, NOT ALL HAVE BEEN
  170. CHASED DOWN. INTERESTED PARTIES ARE
  171. INVITED TO INVESTIGATE AND SHARE THE
  172. RESULTS WITH US ALL.
  173.  
  174.      BUT THIS, TOO HAS ONLY A LIMITED
  175. VALUE, SINCE WE RUN OUT OF INFORMATIVE
  176. TOKENS AT ABOUT $B679 IN A LISTING THAT
  177. CONTINUES UP TO $BFFF. THE ONLY WAY TO
  178. GET THERE IS TO CALL UP THE INFANTRY
  179. AND SLOG OUR WAY THROUGH THE CODE,
  180. BRUTE FORCE. SINCE IT'S A DOS, THERE
  181. MUST BE READ AND WRITE CODE OF SOME
  182. SORT, SO LOOKING AROUND FOR DISK
  183. ACCESSES ($C08C,X) IS A GOOD PLACE TO
  184. START. THE FIRST ENCOUNTER IS AT $BB6B,
  185. WHICH IS CLEARLY A "WRITE" SECTION--
  186. $C08F,X = OUTPUT; $C08E,X = SENSE WRITE
  187. PROTECT. IT'S FOLLOWED BY A READ SECTOR
  188. ROUTINE AT $BBFD-BC64, AND READ ADDRESS
  189. ROUTINE AT $BC65-BCC0. ON CLOSE
  190. EXAMINATION, IT CAN BE SEEN THAT THE
  191. ROUTINES HAVE BEEN LIFTED ALMOST
  192. VERBATIM FROM DOS 3.2, WITH THE ADDRESS
  193. MARKER CHANGED TO D4 AA B7 (IN MOST
  194. CASES). AHA! MAYBE WE CAN SNEAK IN THE
  195. APPROPRIATE ROUTINES FROM DOS 3.3 AND
  196. MAKE IT DO D5 AA 96'S? TO MAKE A
  197. LENGTHY STORY SHORT, THE ANSWER IS YES,
  198. BUT. DOS 3.2 USES, AS YOU PROBABLY
  199. KNOW, "6+2" NIBBLIZING IN STORING DATA
  200. ON THE DISK, WHILE 3.3 USES "5+3". THE
  201. END RESULT IS THAT THE PRE- AND
  202. POST-NIBBLIZING ROUTINES MUST BE
  203. TRANSPLANTED FROM DOS 3.3, AS WELL AS
  204. BOTH READ AND WRITE BYTE TRANSLATE
  205. TABLES. THE ADDRESS MARKERS AND THE
  206. SIZE OF THE NIBBLE BUFFERS MUST ALSO BE
  207. ADJUSTED. WHEN THIS IS DONE (WITH MUCH
  208. WAILING AND GNASHING OF TEETH), THE END
  209. RESULT IS A FUNCTIONAL, DOS 3.3
  210. COMPATIBLE RDOS: RDOS 3.3.
  211.  
  212.      (AS A BRIEF ASIDE, THE ESSENTIAL
  213. TOOLS IN THIS TASK ARE (OF COURSE),
  214. BENEATH APPLE DOS, AND THE DOSSOURCE
  215. COMMENTED LISTING OF ALL THE DOS CODE).
  216.  
  217.      NOW, WE KNOW FROM PREVIOUS GAMES
  218. LIKE CRISIS MOUNTAIN AND MING'S
  219. CHALLENGE THAT WE CAN READ THE SECTORS
  220. INTO MEMORY FROM A DISK WITH MODIFIED
  221. RWTS ROUTINES BY USING ITS OWN RWTS AND
  222. THE INSPECTOR, THEN SWAPPING RWTS
  223. ROUTINES TO STANDARD DOS 3.3 AND
  224. WRITING THEM OUT AGAIN ON A FORMATTED
  225. DISK. THE PROSPECT OF DOING ALL THE SSI
  226. GAMES BY HAND BOGGLES THE MIND,
  227. HOWEVER, AND REQUIRES AN AUTOMATED
  228. APPROACH (THEY WERE SUPPOSED TO WORK
  229. FOR ->US<-, REMEMBER?). THE ANSWER TO
  230. THIS PROBLEM WAS THE PROGRAM NOW KNOWN
  231. AS COPYB - A HIGHLY MODIFIED VERSION OF
  232. COPYA WHICH DOES THE RWTS SWAP FOR YOU,
  233. AND EVEN INITIALIZES DISKS AS A BONUS.
  234. THE VERSION OF COPYB IN GENERAL
  235. CIRCULATION INCLUDES RWTS ROUTINES
  236. WHICH HAVE BEEN MODIFIED FOR READING
  237. AND WRITING RDOS. REASONABLE DIRECTIONS
  238. ARE INCLUDED ON THE DISK, SO IT SHOULD
  239. BE POSSIBLE TO BACK UP YOUR OWN SSI
  240. DISKS, USING THE ADDITIONAL INFORMATION
  241. PROVIDED BELOW.
  242.  
  243.      ARMED WITH RDOS 3.3 AND COPYB, IT
  244. IS NOW POSSIBLE TO BEGIN ATTACKING ONE
  245. OF THE SSI PROTECTED DISKS. SINCE RDOS
  246. IS BASED ON DOS 3.2, THE DISKS ARE ALL
  247. 13-SECTOR FORMAT, AND SINCE THE DOS IS
  248. ALL ON TRACK ZERO, YOU WANT TO BEGIN
  249. THE TRACK COPYING PROCESS WITH TRACK
  250. ONE. TO REITERATE THE COPYB
  251. INSTRUCTIONS, RUN COPYB, THE TYPE
  252. CTRL-C OR RESET WHEN THE PROMPT FOR
  253. SOURCE DISK COMES UP. GET INTO THE
  254. MONITOR AND TYPE 22E:1 TO SET THE
  255. STARTING TRACK TO 1, THEN, IF THE
  256. ADDRESS MARKER BYTES WERE D4 AA B7,
  257. BLOAD THE FILE CALLED "RDOS READ RWTS"
  258. (IT GOES INTO $8000 AS THE DEFAULT
  259. LOCATION). NEXT, BLOAD "RDOS
  260. WRITE",A$7000, THEN MOVE IT TO THE
  261. NORMAL RWTS LOCATIONS WITH
  262. B700<7000.78FFM (THIS IS NECESSARY
  263. BECAUSE YOU'RE USING THE RWTS ROUTINES
  264. TO READ IN THE FILES; WRITING ON TOP OF
  265. OPERATING CODE CAN LEAD TO VERY
  266. UNPLEASANT RESULTS). RETURN TO BASIC,
  267. DELETE LINE FIVE, AND TYPE 'RUN'.
  268. ANSWER THE QUESTION "13 SECTOR", ENTER
  269. THE APPROPRIATE SLOTS AND DRIVES, AND
  270. YOU'RE OFF AND RUNNING TO CREATE AN
  271. RDOS 3.3 COPY (WHEN YOU'RE FINISHED,
  272. YOU'LL HAVE A 16-SECTOR DISKETTE WITH
  273. ONLY 13 SECTORS OCCUPIED PER TRACK, BUT
  274. YOU WON'T NOTICE IT IN USE).
  275.  
  276.      SOME OF THE SSI GAMES USE THE
  277. NORMAL DOS 3.2 ADDRESS MARKER BYTES OF
  278. D5 AA B5. THESE SHOULD BE READ IN USING
  279. THE "DOS 3.2 RWTS" FILE, BUT YOU STILL
  280. NEED TO USE THE "RDOS WRITE" RWTS FOR
  281. THE WRITING ROUTINE.
  282.  
  283.      RDOS USES TRACK 1 FOR THE CATALOG,
  284. AND IDENTIFIES FILES VIA A 24-CHARACTER
  285. ALPHANUMERIC NAME, A LENGTH IN "BLOCKS"
  286. AS IN PASCAL, AND THE LOCATION OF THE
  287. STARTING BLOCK ON THE DISK:
  288.  
  289. TRACK 01  SECTOR 0     SLOT 6  DRIVE 1
  290.           BUFFER 0800  DOS 16     2BCC
  291. =======================================
  292.  
  293.     0 1 2 3  4 5 6 7  8 9 A B  C D E F
  294. ---------------------------------------
  295. 00- R D O S    2 . 1    C O P  Y R I G
  296. 10- H T   1  9 8 1   B 1A0010 001A0000
  297. 20- S Y S T  E M B O  O T
  298. 30-                  T 0100B1 00011A00
  299. 40- R E G 1
  300.    /                 B 0A6009 DC091B00
  301.   /                 /    \  / \  /\  /
  302.  /         FILE TYPE      \/   \/  \/
  303. PROGRAM    A,T,B          /    / FIRST
  304. NAME                     /    /  BLOCK
  305.                         /  NUMBER
  306.                 STARTING     OF
  307.                 LOCATION   BLOCKS
  308.  
  309.  
  310.  
  311.  
  312. THE STARTING BLOCK IS EQUAL TO THE
  313. TRACK NUMBER MULTIPLIED BY 13 PLUS THE
  314. SECTOR NUMBER (1A00 IS REALLY 001A,
  315. WHICH IS DECIMAL 26, OR TRACK 2, SECTOR
  316. 0). IF YOU LOOK THROUGH THE CATALOG
  317. TRACK WITH THE INSPECTOR, YOU FIND THE
  318. BEGINNING OF THE CATALOG AS EXPECTED IN
  319. T1,S0. LOOKING FOR THE CONTINUATION IN
  320. T1,S1, HOWEVER, BRINGS YOU TO THE NEXT
  321. SURPRISE HELD BY RDOS: THERE IS NO
  322. SECTOR INTERLEAVING IN SOFTWARE; IT IS
  323. ALL DONE BY THE SECTOR NUMBER
  324. SEQUENCING DURING SSI'S INITIALIZE
  325. ROUTINE. THE IMPORTANCE OF SECTOR
  326. INTERLEAVING IS DISCUSSED IN "BAG OF
  327. TRICKS", AND IN A SOFTALK ARTICLE ABOUT
  328. A YEAR AGO BY WORTH AND LECHNER. (DOS
  329. USES A LOOKUP TABLE AT $BFA8 TO CHANGE
  330. THE SECTOR NUMBER READ FROM THE VALUE
  331. READ OFF THE DISK ("PHYSICAL SECTOR")
  332. TO THE NUMBER IT THINKS IT SHOULD BE
  333. ("LOGICAL SECTOR"). SSI USES AN
  334. "ASCENDING 7" INTERLEAVE SCHEME, WHICH
  335. MEANS THAT THE SEQUENCE OF SECTORS ON
  336. THE DISK, AS READ BY DOS 3.3 WITH ITS
  337. INTERLEAVE TABLE, IS:
  338.  
  339. 0,7,E,6,D,5,C,4,B,3,A,2,9,1,8,F.
  340.  
  341. THE SECOND CATALOG SECTOR, THEN,
  342. APPEARS TO BE SECTOR 7. IF YOU INTEND
  343. TO DO ANY AMOUNT OF PLAYING AROUND WITH
  344. ONE OF THESE DISKS, USE THE "RDOS
  345. WRITE" RWTS FROM THE COPYB DISK, OR
  346. CHANGE BYTES $BE2A-BE2D TO $EA'S WITH
  347. THE INSPECTOR. THIS OMITS THE TABLE
  348. LOOKUP AND MAKES THE SECTOR NUMBERS
  349. FOLLOW THE SEQUENCE AS USED BY RDOS.
  350.  
  351.      NEXT, COPY THE FILE CALLED RDOS
  352. 3.3 FROM THE COPYB DISK (OR TRACK 0 OF
  353. ANY OF THE RECENTLY UNPROTECTED SSI
  354. SERIES) ONTO TRACK ZERO, SECTORS 0-D.
  355. YOU WOULD EXPECT TO HAVE A WORKING COPY
  356. OF THE GAME AT THIS POINT, BUT THERE
  357. ARE STILL A COUPLE OF SURPRISES IN
  358. STORE FOR YOU (I SAID IT WAS A
  359. CHALLENGE!). THERE ARE SEVERAL
  360. DIFFERENT SECONDARY PROTECTION SCHEMES
  361. USED TO DEFEAT VARIOUS COPIERS, USUALLY
  362. GOING UNDER THE INNOCUOUS NAME OF
  363. "QWERTY". THE MOST COMMON OF THESE
  364. READS IN AN ADDRESS FIELD FROM TRACK 0,
  365. DELAYS A BIT, AND LOOKS FOR AN $EE AS
  366. THE NEXT BYTE ON THE TRACK. IF IT FINDS
  367. IT, A 0 IS STORED IN LOCATION 0,
  368. OTHERWISE THE DISK SPINS FOREVER. BY
  369. CHANGING BYTES $28-29 TO A9 00, THIS
  370. ANNOYANCE IS REMOVED.  A SIMILAR
  371. ROUTINE, SEEN ONLY ONCE OR TWICE, IS
  372. CALLED @WERTY, LOOKS FOR AN $AA
  373. FOLLOWING THE ADDRESS FIELD ON ANY
  374. TRACK, AND REBOOTS IF IT'S NOT FOUND.
  375. THE REMEDY HERE IS TO PUT A9 00 IN
  376. BYTES $20-21.
  377.  
  378.      RECENTLY, A MUCH MORE
  379. SOPHISTICATED TECHNIQUE HAS BEEN USED
  380. (GALACTIC GLADIATORS, ROAD TO
  381. GETTYSBURG), WHICH DOES THE SSI
  382. EQUIVALENT OF "QUARTER-TRACKING" OR
  383. "SPIRALLING". THIS VERSION OF QWERTY
  384. READS IN FOUR PAGES OF SEQUENCIAL BYTES
  385. FROM EACH OF THE FOUR ADJACENT
  386. HALF-TRACKS FROM 20.5 TO 22.0, STORING
  387. THEM AT $1000-1FFF. THE THREE BYTES
  388. FOLLOWING THE FOUR PAGES WORTH ARE USED
  389. AS THE ADDRESS MARKER FOR THE DATA ON
  390. THE NEXT HALF-TRACK (AS WITH ALL THESE
  391. PROTECTION TECHNIQUES, THE "SECTORS"
  392. ARE SKEWED SO THAT THERE IS NEVER VALID
  393. DATA OVERLAPPING ON ADJACENT
  394. HALF-TRACKS). THIS APPROACH EFFECTIVELY
  395. DEFEATS COPIERS LIKE NA II AND
  396. LOCKSMITH, WHICH WRITE AN ENTIRE TRACK
  397. AND OBLITERATE DATA ON ANY ADJACENT
  398. HALF-TRACK. AFTER READING IN THE DATA,
  399. THE MEMORY VALUES ARE EXCLUSIVE-ORED
  400. WITH THE ADDRESS (1000 CONTAINS 00,
  401. 1001 CONTAINS 01, ETC.), AND IF AN
  402. ERROR IS FOUND, IT REBOOTS THE DISK.
  403. PLACING AN RTS ($60) AT THE ENTRY POINT
  404. OF $A0F0 WILL AVOID THE ENTIRE ISSUE
  405. AND MAKE THE COPYA VERSION RUN.
  406.  
  407.      THE FINAL (I HOPE) HURDLE TO USING
  408. RDOS 3.3 IS THE PROGRAM WHICH
  409. INITIALIZES A SAVE GAME DISKETTE IN
  410. AN RDOS-COMPATIBLE FORMAT. IT IS CALLED
  411. SSI.INIT AND LOADS INTO $800-AFF (IT IS
  412. USUALLY ACCESSED VIA A 'CALL 2800' FROM
  413. A BASIC PROGRAM). SINCE IT ONLY WRITES
  414. ADDRESS FIELDS, AND NOT DATA SECTORS
  415. (WITH NO VERIFY), IT IS A VERY FAST
  416. INIT. ALL THAT'S NECESSARY TO GENERATE
  417. A DISK COMPATIBLE WITH RDOS 3.3 IS TO
  418. REPLACE THE D4 AA B7 (OR D5 AA B5)
  419. ADDRESS MARKER BYTE WITH D5 AA 96:
  420. CHANGE BYTES $8F5 TO $D5 AND $8FF TO
  421. $96.
  422.  
  423.      NOW FOR THE BAD NEWS: WHILE RDOS
  424. IS FAST, PRIMARILY BECAUSE ALL FILES
  425. ARE STORED IN SEQUENCIAL BLOCKS, RDOS
  426. 3.3 IS SLOW BECAUSE OF THE SECTOR
  427. INTERLEAVE USED BY SSI (THE DISK MUST
  428. MAKE AN ALMOST AN ENTIRE REVOLUTION FOR
  429. EACH SECTOR THAT IS READ IN). IT IS
  430. FAIRLY EASY TO ADD AN INTERLEAVE LOOKUP
  431. TABLE TO RDOS 3.3 (IT'S CALLED RDOS
  432. 3.3A ON THE DISK), BUT BAD THINGS
  433. HAPPENED DURING MY ATTEMPTS TO
  434. INCORPORATE IT INTO THE SSI.INIT
  435. PROGRAM. THE CODE FROM $851 TO $86B
  436. NEEDS MORE ALTERATION THAN I HAD
  437. PATIENCE FOR (THERE'S ROOM FOR A PATCH
  438. IN $9D7-9FF), AND WOULD BE WORTH THE
  439. EFFORT IF SOME AMBITIOUS KRACKIST OUT
  440. THERE COULD FIND THE TIME...
  441.  
  442.      FINALLY, AS A TYPICAL EXAMPLE OF
  443. MURPHY'S LAW ("IF ANYTHING CAN GO
  444. WRONG, IT WILL, AND AT THE WORST
  445. POSSIBLE MOMENT), THAT AFTER DOING ALL
  446. THIS AND CONVERTING SOME 20 GAMES, THE
  447. VERY LAST ONE I TRIED WAS GERMANY 1985.
  448. THIS IS A FAIRLY RECENT PUBLICATION OF
  449. SSI WHICH IS COMPLETELY WRITTEN IN
  450. MACHINE LANGUAGE, DOES NOT USE RDOS AT
  451. ALL, AND WILL REQUIRE A TOTALLY
  452. DIFFERENT APPROACH TO UNPROTECTION. IN
  453. THE WORDS OF RICKY SKAGGS
  454. ("HEARTBROKE", FROM HIS "HIGHWAYS AND
  455. HEARTACHES" ALBUM):
  456.  
  457.      "PRIDE, WHEN YOU'RE RICH,
  458.        IS A BORE WHEN YOU'RE LONELY,
  459.       STILL MADNESS PREVAILS UPON
  460.        REASON TO YIELD.
  461.  
  462.       BUT ALL IS NOT LOST, IT IS ONLY
  463.        MISTAKEN,
  464.       IT'S A SMALL CONSOLATION, BUT I
  465.        KNOW JUST HOW YOU FEEL.
  466.  
  467.  
  468.       NOBODY SAID IT WAS GOING TO BE
  469.        EASY,
  470.       WE ALL HAVE OUR WEAK SIDES AND
  471.        NEED SOME GOOD TOUCHIN'.
  472.  
  473.       NOBODY SAID THAT IT WOULD NOT BE
  474.        WORTH IT,
  475.       THE HUMAN CONDITIONS -- CONTINUE
  476.        AS SUCH."
  477.  
  478.  
  479.  
  480.  
  481.  
  482. 
  483.  
  484.  
  485.